#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <stack>
#include <queue>
#include <unordered_set>
#include <unordered_map>
#include <cmath>
#include <algorithm>

using namespace std;

class Solution {
public:
    // bool dfs(int index, vector<int> &arr, vector<int> &edges, int len) {
    //     if (index == arr.size()) {
    //         return true;
    //     }
    //     for (int i = 0; i < edges.size(); i++) {
    //         edges[i] += arr[index];
    //         if (edges[i] <= len && dfs(index + 1, arr, edges, len)) {
    //             return true;
    //         }
    //         edges[i] -= arr[index];
    //     }
    //     return false;
    // }
    bool canBeSquare(vector<int> &arr) {
        int total = 0;
        for (auto &num : arr) {
            total += num;
        }
        if (total % 4) return false;
        int eachEdgeLen = total / 4, n = arr.size();


        // 一点都不对的code但是ac了
        // unordered_map<int, int>ump;
        // for (auto &num : arr) {
        //     ump[num]++;
        // }
        // ump[0] = 0x7fffffff;
        // for (auto & num:arr) {
        //     if (ump[eachEdgeLen - num] > 0) {
        //         ump[eachEdgeLen - num]--;
        //     }
        //     else{return false;}
        // }
        // return true;



        // 暴力
        // sort(arr.begin(), arr.end(), greater<int>());
        // vector<int> edges(4);
        // return dfs(0, arr, edges, eachEdgeLen);


        // dp
        // vector<int> dp(1 << n, -1);
        // dp[0] = 0;
        // for (int s = 1; s < (1 << n); s++) {
        //     for (int k = 0; k < n; k++) {
        //         if ((s & (1 << k))) {
        //             int s1 = s & ~(1 << k);
        //             if (dp[s1] >= 0 && dp[s1] + arr[k] <= eachEdgeLen) {
        //                 dp[s] = (dp[s1] + arr[k]) % eachEdgeLen;
        //                 break;
        //             }
        //         }
        //     }
        // }
        // return dp[(1 << n) - 1] == 0;
    }
};

int main() {
    vector<int> arr;
    int num;
    string readed;
    getline(cin, readed);
    stringstream s(readed);
    while (s >> num) {
        arr.push_back(num);
    }
    cout << (Solution().canBeSquare(arr) ? 1 : 0) << endl;
    //system("pause");
    return 0;
}
